#pragma once

#include <string>
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

class Node{

	public:
		Node(int newi , int newj,int s){
			l = newi;
			r = newj;
			suffix=s;
			child=NULL;
			sibling=NULL;
			suffixNode=NULL;
		}

		//Pointers around the tree
		Node* child;
		Node* sibling;
		Node* suffixNode;

		//Left and right index of substring
		int l;
		int r;

		//The depth of the Node
		int depth;

		//if it is internal, it is the leaf interval
		int highLeaf,lowLeaf;

		//Depth first search number
		int ds;

		//The suffix number
		int suffix;

		//Method for getting the string
		string getEdge(string s){
			return s.substr(l, (r-l));
		}
};
